#9*9乘法表实践
#采用for...in...循环常规输出
"""
    九九乘法表的输出
    首先要理解其原理：按行输出
    以下代码中所有出现的  :<4   均表示占位符，并且向左对齐
"""

# 左下角for循环输出九九乘法表
for i in range(1,10):                                       #控制行
    for j in range(1,i+1):                                  #控制列
        print("{}*{}={:<4}".format(i,j,i*j),end="  ")       #采用format格式化输出
    print(" ")                                              #换行符

print("=========="*10)                                      #神奇美丽的分隔符


#左上角for循环输出九九乘法表
for i in range(9,0,-1):                                     #控制行
    for j in range(1,i+1):                                  #控制列
        print("{}*{}={:<4}".format(i,j,i*j),end="  ")       #采用format格式化输出
    print("")                                               #换行符


print("=========="*10)                                      #神奇美丽的分隔符


#右下角for循环输出九九乘法表
for i in range(1,10):                                       #首先控制行
    for k in range(1,10-i):                                 #计算输出空白格数量
        print("          ",end="")                          #输出空格
    for j in range(i,0,-1):                                 #控制列                             
        print("{}*{}={:<4}".format(j,i,i*j),end = "  ")     #采用format格式化输出
    print("")                                               #换行符


print("=========="*10)                                      #神奇美丽的分隔符


#右上角for循环输出九九乘法表
for i in range(9,0,-1):                                     #控制行
    for k in range(9-i,0,-1):                               #计算输出空白格数量
        print("          ",end="")                          #输出空格
    for j in range(i,0,-1):                                 #控制列                           
        print("{}*{}={:<4}".format(j,i,i*j),end = "  ")     #采用format格式化输出
    print("")

print("=========="*10)                                      #神奇美丽的分隔符


#采用while循环输出左下角的九九乘法表
j = 1                                                       #控制行，默认起始行数为1
while j<=9:
    i = 1                                                   #控制列
    while i <= j:                                           #确定行数列数之间的关系
        print("{}*{}={:<4}".format(i,j,i*j),end="  ")       #采用format格式化输出数据
        i += 1                                              #列数循环加1，等于    i = i+1
    print("")                                               #换行
    j += 1                                                  #行数循环加1，等于    j = j+1

print("=========="*10)                                      #神奇美丽的分隔符



#采用while循环输出左上角模式的九九乘法表
j=9                                                         #控制行，默认起始行数为9
while j>=1:
    i=1
    while i<=j:                                             #控制列，并确定行与列之间的关系
        print("{}*{}={:<4}".format(i,j,i*j),end="  ")       #采用format格式化输出数据
        i += 1                                              #列数循环加1，等同于   i = i+1
    print("")                                               #换行
    j -= 1                                                  #行数循环减1，等同于   j = j-1


print("=========="*10)                                      #神奇美丽的分隔符

#采用while循环输出右下角格式的九九乘法表
i = 1                                                       #控制行，默认起始行数为1
while i<=9:
    k = 1                                                   #控制空白个数量，默认起始空白格为1
    while k<=9-i:                                           #确定空白格数与行之间的关系
        print(end="          ")                             #输出空白格
        k += 1                                              #循环加1，等同于    k = k+1
    j = i                                                   #控制列，起始列数与行数相同                         
    while (j>=1):
        print("{}*{}={:<4}".format(i,j,i*j),end = "  ")     #采用format格式化输出数据
        j -= 1                                              #列数循环减1，等同于   j = j-1
    print("")                                               #换行符
    i += 1                                                  #行数循环加1，等同于   i = i+1
   

print("=========="*10)                                      #神奇美丽的分隔符

#采用while循环输出右上角格式的九九乘法表
i = 9                                                       #控制行，默认起始行数为9
while i>=1: 
    k = 1                                                   #控制每一行空白格，默认起始空白格数为1
    while k<=9-i:                                           #确定空白个数与行数之间的关系
        print(end = "          ")                           #输出空白格
        k += 1                                              #循环加1，等同于    k = k+1
    j = i                                                   #控制列，起始列数默认等于行数
    while j >= 1:       
        print("{}*{}={:<4}".format(i,j,i*j),end = "  ")     #采用format格式化输出数据
        j -= 1                                              #列数循环减1，等同于   j = j-1
    i -= 1                                                  #行数循环减1，等同于   i = i-1     
    print("")                                               #换行